<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //构造函数
        function Person() {
            this.name = "jack"
        }
        // 加入单例核心代码
        let instance = null
        function single() {
            if (!instance) instance = new Person();
            return instance
        }
        // 再来创建，使用single()
        //第一次执行Single()的时候，instance是null
        //就要执行new Person() 给instance 赋值，从此以后，instance是一个Person的实例了
        //返回instance，给p1
        const p1 = new single()
        //当我第二次调用single的时候
        //此时instance是第一次new出来的实例
        //if条件就不会执行了，直接返回第一次实例的地址
        const p2 = new single()
        console.log(p1, p2);
        console.log(p1 === p2);
    </script>
</body>

</html>